export {}
//封装 可以把类内部属性隐藏起来，不让外部访问
// 1.可以提高易用性
// 2.可以保护类的隐私
class Animal {
  //public公有属性 可以在本类，子类和外部（实例）访问到
  public name: string;
  //protected保护属性 可以在本类，子类访问，不能外部（实例）访问到
  protected age: number;
  //private私有属性 只能在本类
  private weight: string;
  //static静态属性，直接用类点语法访问，其他不可访问
  static sex: string = '男';
  constructor(name: string, age: number, weight: string) {
    this.name = name;
    this.age = age;
    this.weight = weight;
  }
};

class Person extends Animal{
  //私有到  只有自己可以访问
  private balance: number;
  constructor(name: string, age: number, weight: string, balance: number) {
    super(name, age, weight)
    this.balance = balance;
  };
  getName() {
    return this.name//可以取得
  };
  getAge() {
    return this.age//可以取得
  };
  getWeight() {
    // return this.weight  不能取得，因为是private私有的
  }
}
let p1 = new Person('小李', 33, '60kg', 99);
p1.name//可以取得
// p1.age 不能取得，因为是protected的
// p1.weight 不能取得，因为是private的